At the heart of the Internet is the collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (“TCP/IP”) suite of protocols to communicate with one another. Tuning the TCP/IP parameters, therefore, directly affects actual throughput speed of the pipe.
Many computing devices, however, are not properly tuned to take advantage of their connection speed to networks. Therefore, computers having high-speed connections may not be utilizing the existing bandwidth available to the fullest extent.
During the TCP/IP connection setup process a receiver advertises its TCP Receive Window (RWIN) size to a sender. The size of the RWIN affects how many packets may be sent before receiving an acknowledgment (ACK) indicating receipt of the packets. On a high bandwidth/high TCP connection, a sender may transmit a number of packets before the first packet ever reaches the receiver. Even if the receiver sent an ACK immediately, it takes some more time for the ACK to reach the sender. If a sender waits for an ACK before sending data the pipe will not remain full thereby decreasing pipe throughput. The sender, therefore, should not stall waiting for ACK. As a result, one of the most significant TCP/IP parameters to tune is the size of the RWIN.
Tuning the size of the RWIN, however, is not a trivial task. Improperly tuning the size of the RWIN results in decreasing throughput of the pipe, while properly tuning the size of the RWIN can dramatically increase throughput.
Today, some advanced users manually set the size of the RWIN. This involves experimenting with different RWIN settings to determine the best setting for their particular connection. Many users, however, do not have the technical expertise to adjust the size of the RWIN. Additionally, if the connection speed changes, the size of the RWIN remains constant unless manually changed.